package com.aliyun.pojo.pay;


import com.alipay.v3.model.OpenApiRoyaltyDetailInfoPojo;
import com.alipay.v3.model.RefundGoodsDetail;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AliyunPayRefundParam {
    private BigDecimal refund_amount;   // 退款金额。 需要退款的金额，该金额不能大于订单金额，单位为元，支持两位小数
    private String out_trade_no;    // 订单支付时传入的商户订单号和支付宝交易号不能同时为空
    private String trade_no;    // 支付宝交易号，和商户订单号不能同时为空 trade_no,out_trade_no如果同时存在优先取trade_no
    private String refund_reason;    // 退款原因说明。 商家自定义，将在会在商户和用户的pc退款账单详情中展示
    // 退款请求号。 标识一次退款请求，需要保证在交易号下唯一，如需部分退款，则此参数必传。如果在退款请求时未传入，则该值为创建交易时的商户订单号。
    private String out_request_no;

    public AliyunPayRefundParam(BigDecimal refund_amount, String out_trade_no, String trade_no, String refund_reason, String out_request_no) {
        this.refund_amount = refund_amount;
        this.out_trade_no = out_trade_no;
        this.trade_no = trade_no;
        this.refund_reason = refund_reason;
        this.out_request_no = out_request_no;
    }

    private RefundGoodsDetail[] refund_goods_detail;    // 退款包含的商品列表信息。
    private OpenApiRoyaltyDetailInfoPojo[] refund_royalty_parameters;    // 退分账明细信息。

    /**
     * 查询选项。 商户通过上送该参数来定制同步需要额外返回的信息字段，数组格式。
     * 【枚举值】
     * 本次退款使用的资金渠道: refund_detail_item_list
     * 银行卡冲退信息: deposit_back_info
     * 本次退款退的券信息: refund_voucher_detail_list
     * 【示例值】["refund_detail_item_list"]
     */
    private String[] query_options;
    private String related_settle_confirm_no;   // 针对账期交易，在确认结算后退款的话，需要指定确认结算时的结算单号。
}
